注册

第六节:数据类型转换
首页 > 嵌入式开发 > C语言入门视频教程    作者:RainFly   2015年5月17日 20:17 星期日   热度:5795°   字号:   评论:0    
时间:2015-5-17 20:17   热度:5795°  评论:0 条 
C语言数据类型转换
      变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。

自动转换

自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:
      若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
      转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
      所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
      char型和short型参与运算时,必须先转换成int型。
      在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

      下图表示了类型自动转换的规则。

下载.gif

【例3-12】自动数据类型转换

      #include<stdio.h>
      intmain(){
      float PI=3.14159;
      int s,r=5;
      s=r*r*PI;
      printf("s=%d\n",s);
      return0;
      }
本例程序中,PI为实型;s,r为整型。在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。
强制类型转换

强制类型转换是通过类型转换运算来实现的。其一般形式为:
      (类型说明符)  (表达式)
      其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
      例如:
      (float) a;/* 把a转换为实型 */
      (int)(x+y);/* 把x+y的结果转换为整型 */

在使用强制转换时应注意以下问题:
      类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
      无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

      【例3-13】强制数据类型转换
      #include<stdio.h>
      intmain(void){
      float f=5.75;
      printf("(int)f=%d,f=%f\n",(int)f,f);
      return0;
      }

      本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。




  您阅读这篇文章共花了:  
捐赠支持:如果觉得这篇文章对您有帮助,请 "扫一扫"鼓励作者!
二维码加载中...
本文作者:RainFly      文章标题: 第六节:数据类型转换
本文地址:http://www.rainfly.cn/?post=124
版权声明:若无注明,本文皆为“雨夜轩”原创,转载请保留文章出处。

赶紧抢沙发哟!

QQ游客评论

返回顶部    首页    捐赠支持    手气不错    友情链接    关于我们    站长工具    站长介绍    手机版本    后台登陆   
版权所有:雨夜轩    站长:RainFly    特别鸣谢   文章归档   皖ICP备15003600号-1   百度统计
Copyright©2015 雨夜轩 Powered by emlog强力驱动 七牛CDN全球加速 360站长联盟安全认证 中国博客联盟荣誉成员 可信赖网站 站点地图   
页面加载耗时:0.031秒 数据库查询次数:11次
背景设置